package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import view.ClienteView;

import model.Cliente;

public class AdministradorPersistenciaClientes extends AdministradorPersistencia {

	private static AdministradorPersistenciaClientes instancia;
	private String querySelectAll = "select * from clientes";
	private String querySelect2 = "select * from clientes where dni=?";
	
	
	private AdministradorPersistenciaClientes(){

	}
	
	public static AdministradorPersistenciaClientes getInstancia(){
		if (instancia == null){
			instancia = new AdministradorPersistenciaClientes();
		}
		return instancia;
	}
	
	public Vector<ClienteView> obtenerVistaClientes() throws Exception {
		Vector<ClienteView> lista = new Vector<ClienteView>();
		Connection con = super.getConnection();
		PreparedStatement ps = con.prepareStatement(querySelectAll);
		ResultSet res = ps.executeQuery();
		while (res.next()){
			ClienteView c = new ClienteView(
					res.getInt("dni"),
					res.getString("nombre"),
					res.getString("apellido"),
					res.getInt("telefono")
					);
			lista.add(c);
		}
		return lista;
	}

	public Vector<String> obtenerNombresClientes() throws Exception {
		// TODO Auto-generated method stub
		Vector<String> vectorNombres = new Vector<String>();
		Connection con = super.getConnection();
		PreparedStatement ps = con.prepareStatement(querySelectAll);
		ResultSet res = ps.executeQuery();
		while (res.next()){
			vectorNombres.add(res.getString("dni")+" "+res.getString("apellido")+","+res.getString("nombre"));
		}
		con.close();
		return vectorNombres;
	}

	public Cliente obtenerCliente(int dni) throws Exception {
		Cliente cliente= new Cliente();
		Connection con = super.getConnection();
		PreparedStatement ps = con.prepareStatement(querySelect2);
		ps.setInt(1, dni);
		ResultSet res = ps.executeQuery();
		while (res.next()){
			cliente.setDni(res.getInt("dni"));
			cliente.setNombre(res.getString("nombre"));
			cliente.setApellido(res.getString("apellido"));
			cliente.setTelefono(res.getInt("telefono"));
		}
		con.close();
		return cliente;
	}

	public Vector<Cliente> obtenerClientes() throws Exception {
		// Este m�todo es para inicializar el vector clientes en el Sistema.
		Vector<Cliente> vector = new Vector<Cliente>();
		Connection con = super.getConnection();
		PreparedStatement ps = con.prepareStatement(querySelectAll);
		ResultSet res = ps.executeQuery();
		while (res.next()){
			Cliente cliente = new Cliente(res.getInt("dni"),res.getString("nombre"),res.getString("apellido"),res.getInt("telefono"));
			vector.add(cliente);
		}
		con.close();
		return vector;
	}
	
}
